Changeset 30621 in project


Ignore:
Timestamp:
04/01/14 02:11:01 (7 years ago)
Author:
Ivan Raikov
Message:

npccl: added support for writing layout pointsets to file

Location:
release/4/npccl/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/4/npccl/trunk/examples/GL.npccl

    r30620 r30621  
    2222
    2323      (
    24 
    25        (const xExtent = 1500)
    26        (const yExtent = 1000)
    2724
    2825       (const PFlength   = 1500)
     
    6158       (const nGoC = 1)
    6259
     60       (const xExtent = PFlength)
     61       (const yExtent = 1000)
     62
    6363       (component (type local-cell-forest) (name GC)
    6464
  • release/4/npccl/trunk/npccl-utils.scm

    r30620 r30621  
    132132          (alist-ref name (cell-sections cell)))
    133133
     134       
     135        (define (write-pointset name pts)
     136            (call-with-output-file (string-append (->string name) ".sorted.dat")
     137              (lambda (out)
     138                (for-each (lambda (x)
     139                            (fprintf out "~A ~A ~A~%"
     140                                     (coord 0 x)
     141                                     (coord 1 x)
     142                                     (coord 2 x)))
     143                          pts))
     144              ))
    134145
    135146        (define (write-sections section-name cells)
  • release/4/npccl/trunk/npccl.scm

    r30536 r30621  
    457457(use srfi-1 mathh matchable kd-tree mpi npccl-utils)
    458458(include "mathh-constants")
     459(define npccl-write-pointsets (make-parameter #f))
    459460(MPI:init)
    460461(if (member "-v" (command-line-arguments))
    461462    (npccl-verbose 1))
     463(if (member "-w" (command-line-arguments))
     464    (npccl-write-pointsets #t))
    462465(define my-comm (MPI:get-comm-world))
    463466(define myrank  (MPI:comm-rank my-comm))
     
    631634           (
    632635            (,layout-name
    633              (let ((pts (kd-tree->list
    634                          (car ,(fold-right
    635                                 (lambda (xs ax)
    636                                   (fold (match-lambda*
    637                                          (((id . sym) ax)
    638                                           (let ((rhs (qrhs (hash-table-ref sys sym))))
    639                                             `(let ((,sym ,rhs)) ,ax))))
    640                                         ax xs))
    641                                 (cdr (last (last layout)))
    642                                 layout))
    643                          )))
    644                ,(case (forest-type forest)
    645                   ((local)
    646                    `(let recur ((pts pts) (myindex 0) (ax '()))
    647                       (if (null? pts) ax
    648                           (let ((ax1 (if (= (modulo myindex mysize) myrank)
    649                                          (cons (car pts) ax) ax)))
    650                             (recur (cdr pts) (+ 1 myindex) ax1)))
    651                       ))
    652                   ((global)
    653                    'pts))
     636             (let* ((pts (kd-tree->list
     637                          (car ,(fold-right
     638                                 (lambda (xs ax)
     639                                   (fold (match-lambda*
     640                                          (((id . sym) ax)
     641                                           (let ((rhs (qrhs (hash-table-ref sys sym))))
     642                                             `(let ((,sym ,rhs)) ,ax))))
     643                                         ax xs))
     644                                 (cdr (last (last layout)))
     645                                 layout))
     646                          ))
     647                    (layout
     648                     ,(case (forest-type forest)
     649                        ((local)
     650                         `(let recur ((pts pts) (myindex 0) (ax '()))
     651                            (if (null? pts) ax
     652                                (let ((ax1 (if (= (modulo myindex mysize) myrank)
     653                                               (cons (car pts) ax) ax)))
     654                                  (recur (cdr pts) (+ 1 myindex) ax1)))
     655                            ))
     656                        ((global)
     657                         'pts)))
     658                    )
     659               (if (npccl-write-pointsets)
     660                   (write-pointset (quote ,(cn forest)) layout))
     661               layout
    654662               ))
    655663            .
Note: See TracChangeset for help on using the changeset viewer.