OSDN Git Service

mrcImageGetPixels for CUDA/No Cuda
authorTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Mon, 7 Jul 2014 10:29:01 +0000 (19:29 +0900)
committerTakuo Yasunaga <yasunaga@bio.kyutech.ac.jp>
Mon, 7 Jul 2014 10:29:01 +0000 (19:29 +0900)
modified:   include/mrcImage.h
new file:   include/mrcImageGetPixelsCUDA.h
modified:   src/Config/x86Mac64.inc
modified:   src/Objects/DataManip/mrcImage/inc/mrcImage.h
new file:   src/Objects/DataManip/mrcImage/src/mrcImageGetPixels.c
new file:   src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.cu
new file:   src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.h
modified:   src/Tools/Config/Define.inc

mrcImagePixelDataGet for CUDA:
modified:   src/Tools/mrcImage/mrcImagePixelDataGet/*

45 files changed:
hostdepend/X86MAC64/bin/X86MAC64/mrcImagePixelDataGet
hostdepend/X86MAC64/lib/X86MAC64/libEosObjects.a
hostdepend/X86MAC64/lib/X86MAC64/libEosObjects.debug.a
hostdepend/X86MAC64/lib/X86MAC64/libeosCuda.a
hostdepend/X86MAC64/lib/X86MAC64/libmrcImage.a
hostdepend/X86MAC64/lib/X86MAC64/shared/eosCuda.sharedo
hostdepend/X86MAC64/lib/X86MAC64/shared/mrcImageGetPixels.sharedo [new file with mode: 0644]
hostdepend/X86MAC64/lib/X86MAC64/shared/mrcImageGetPixelsCUDA.sharedo [new file with mode: 0644]
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/.Depend
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/.Source
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.a
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.debug.a
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixels.c [new symlink]
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixels.sharedo [new file with mode: 0644]
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixelsCUDA.cu [new symlink]
hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixelsCUDA.sharedo [new file with mode: 0644]
hostdepend/X86MAC64/src/Objects/General/eosCuda/src/X86MAC64/Makefile
hostdepend/X86MAC64/src/Objects/General/eosCuda/src/X86MAC64/eosCuda.sharedo
hostdepend/X86MAC64/src/Objects/General/eosCuda/src/X86MAC64/libeosCuda.a
hostdepend/X86MAC64/src/Tools/mrcImage/mrcImagePixelDataGet/src/X86MAC64/.Depend
hostdepend/X86MAC64/src/Tools/mrcImage/mrcImagePixelDataGet/src/X86MAC64/mrcImagePixelDataGet
include/mrcImage.h
include/mrcImageGetPixelsCUDA.h [new file with mode: 0644]
src/Config/x86Mac64.inc
src/Objects/DataManip/mrcImage/doc/mrcImage.html
src/Objects/DataManip/mrcImage/inc/mrcImage.h
src/Objects/DataManip/mrcImage/src/.CHeader
src/Objects/DataManip/mrcImage/src/mrcImageGetPixels.c [new file with mode: 0644]
src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.cu [new file with mode: 0644]
src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.h [new file with mode: 0644]
src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.h.org [new file with mode: 0644]
src/Tools/Config/Define.inc
src/Tools/mrcImage/mrcImagePixelDataGet/Config/Define.inc
src/Tools/mrcImage/mrcImagePixelDataGet/Config/OptionControlFile
src/Tools/mrcImage/mrcImagePixelDataGet/Makefile [changed from file to symlink]
src/Tools/mrcImage/mrcImagePixelDataGet/doc/Makefile
src/Tools/mrcImage/mrcImagePixelDataGet/inc/mrcImagePixelDataGet.h
src/Tools/mrcImage/mrcImagePixelDataGet/src/argCheck.c
src/Tools/mrcImage/mrcImagePixelDataGet/src/init.c
src/Tools/mrcImage/mrcImagePixelDataGet/src/mrcImagePixelDataGet.c
src/Tools/mrcImage/mrcImagePixelDataGet/src/mrcImagePixelDataGet.html [changed mode: 0644->0755]
src/Tools/mrcImage/mrcImagePixelDataGet/src/mrcImagePixelDataGet.pane
src/Tools/mrcImage/mrcImagePixelDataGet/src/test/Makefile [new file with mode: 0755]
src/Tools/mrcImage/mrcImagePixelDataGet/src/test/data [new symlink]
src/Tools/mrcImage/mrcImagePixelDataGet/src/usage.c

index 03a1a96..d9c94f7 100755 (executable)
Binary files a/hostdepend/X86MAC64/bin/X86MAC64/mrcImagePixelDataGet and b/hostdepend/X86MAC64/bin/X86MAC64/mrcImagePixelDataGet differ
index 04d5bb1..96c6f0c 100644 (file)
Binary files a/hostdepend/X86MAC64/lib/X86MAC64/libEosObjects.a and b/hostdepend/X86MAC64/lib/X86MAC64/libEosObjects.a differ
index 69bd563..dacf73e 100644 (file)
Binary files a/hostdepend/X86MAC64/lib/X86MAC64/libEosObjects.debug.a and b/hostdepend/X86MAC64/lib/X86MAC64/libEosObjects.debug.a differ
index da92a5c..abba5bd 100644 (file)
Binary files a/hostdepend/X86MAC64/lib/X86MAC64/libeosCuda.a and b/hostdepend/X86MAC64/lib/X86MAC64/libeosCuda.a differ
index bdaa1f4..94c1b1e 100644 (file)
Binary files a/hostdepend/X86MAC64/lib/X86MAC64/libmrcImage.a and b/hostdepend/X86MAC64/lib/X86MAC64/libmrcImage.a differ
index c38b19e..289ac6d 100644 (file)
Binary files a/hostdepend/X86MAC64/lib/X86MAC64/shared/eosCuda.sharedo and b/hostdepend/X86MAC64/lib/X86MAC64/shared/eosCuda.sharedo differ
diff --git a/hostdepend/X86MAC64/lib/X86MAC64/shared/mrcImageGetPixels.sharedo b/hostdepend/X86MAC64/lib/X86MAC64/shared/mrcImageGetPixels.sharedo
new file mode 100644 (file)
index 0000000..e5d12dc
Binary files /dev/null and b/hostdepend/X86MAC64/lib/X86MAC64/shared/mrcImageGetPixels.sharedo differ
diff --git a/hostdepend/X86MAC64/lib/X86MAC64/shared/mrcImageGetPixelsCUDA.sharedo b/hostdepend/X86MAC64/lib/X86MAC64/shared/mrcImageGetPixelsCUDA.sharedo
new file mode 100644 (file)
index 0000000..857302b
Binary files /dev/null and b/hostdepend/X86MAC64/lib/X86MAC64/shared/mrcImageGetPixelsCUDA.sharedo differ
index 61f4599..16e5b3f 100644 (file)
@@ -137,6 +137,7 @@ X86MAC64/mrcImageCopy.o:mrcImageCopy.o
 X86MAC64/mrcImageDataSet.o:mrcImageDataSet.o
 X86MAC64/mrcImageError.o:mrcImageError.o
 X86MAC64/mrcImageGet.o:mrcImageGet.o
+X86MAC64/mrcImageGetPixels.o:mrcImageGetPixels.o
 X86MAC64/mrcImageInfo.o:mrcImageInfo.o
 X86MAC64/mrcImageInit.o:mrcImageInit.o
 X86MAC64/mrcImageOperation.o:mrcImageOperation.o
index f654f3a..cbb78c9 100644 (file)
@@ -138,6 +138,7 @@ mrcImageCopy.c \
 mrcImageDataSet.c \
 mrcImageError.c \
 mrcImageGet.c \
+mrcImageGetPixels.c \
 mrcImageInfo.c \
 mrcImageInit.c \
 mrcImageOperation.c \
@@ -157,6 +158,7 @@ mrcImagefuncmin.c \
 mrcRefUtil.c \
 lmrcImageAddValueCuda.cu \
 lmrcImageClusterAnalysis.cu \
+mrcImageGetPixelsCUDA.cu \
 
 OBJ = \
 fftn.o \
@@ -298,6 +300,7 @@ mrcImageCopy.o \
 mrcImageDataSet.o \
 mrcImageError.o \
 mrcImageGet.o \
+mrcImageGetPixels.o \
 mrcImageInfo.o \
 mrcImageInit.o \
 mrcImageOperation.o \
@@ -317,6 +320,7 @@ mrcImagefuncmin.o \
 mrcRefUtil.o \
 lmrcImageAddValueCuda.o  \
 lmrcImageClusterAnalysis.o  \
+mrcImageGetPixelsCUDA.o  \
 
 SHAREDOBJ = \
 fftn.sharedo \
@@ -458,6 +462,7 @@ mrcImageCopy.sharedo \
 mrcImageDataSet.sharedo \
 mrcImageError.sharedo \
 mrcImageGet.sharedo \
+mrcImageGetPixels.sharedo \
 mrcImageInfo.sharedo \
 mrcImageInit.sharedo \
 mrcImageOperation.sharedo \
@@ -477,6 +482,7 @@ mrcImagefuncmin.sharedo \
 mrcRefUtil.sharedo \
 lmrcImageAddValueCuda.sharedo  \
 lmrcImageClusterAnalysis.sharedo  \
+mrcImageGetPixelsCUDA.sharedo  \
 
 REALOBJ = \
 X86MAC64/fftn.o \
@@ -618,6 +624,7 @@ X86MAC64/mrcImageCopy.o \
 X86MAC64/mrcImageDataSet.o \
 X86MAC64/mrcImageError.o \
 X86MAC64/mrcImageGet.o \
+X86MAC64/mrcImageGetPixels.o \
 X86MAC64/mrcImageInfo.o \
 X86MAC64/mrcImageInit.o \
 X86MAC64/mrcImageOperation.o \
@@ -637,6 +644,7 @@ X86MAC64/mrcImagefuncmin.o \
 X86MAC64/mrcRefUtil.o \
 X86MAC64/lmrcImageAddValueCuda.o \
 X86MAC64/lmrcImageClusterAnalysis.o \
+X86MAC64/mrcImageGetPixelsCUDA.o \
 
 REALSHAREDOBJ = \
 X86MAC64/fftn.sharedo \
@@ -778,6 +786,7 @@ X86MAC64/mrcImageCopy.sharedo \
 X86MAC64/mrcImageDataSet.sharedo \
 X86MAC64/mrcImageError.sharedo \
 X86MAC64/mrcImageGet.sharedo \
+X86MAC64/mrcImageGetPixels.sharedo \
 X86MAC64/mrcImageInfo.sharedo \
 X86MAC64/mrcImageInit.sharedo \
 X86MAC64/mrcImageOperation.sharedo \
@@ -797,6 +806,7 @@ X86MAC64/mrcImagefuncmin.sharedo \
 X86MAC64/mrcRefUtil.sharedo \
 X86MAC64/lmrcImageAddValueCuda.sharedo \
 X86MAC64/lmrcImageClusterAnalysis.sharedo \
+X86MAC64/mrcImageGetPixelsCUDA.sharedo \
 
 OBJDEBUG = \
 fftn.debugo \
@@ -938,6 +948,7 @@ mrcImageCopy.debugo \
 mrcImageDataSet.debugo \
 mrcImageError.debugo \
 mrcImageGet.debugo \
+mrcImageGetPixels.debugo \
 mrcImageInfo.debugo \
 mrcImageInit.debugo \
 mrcImageOperation.debugo \
@@ -1096,6 +1107,7 @@ X86MAC64/mrcImageCopy.debugo \
 X86MAC64/mrcImageDataSet.debugo \
 X86MAC64/mrcImageError.debugo \
 X86MAC64/mrcImageGet.debugo \
+X86MAC64/mrcImageGetPixels.debugo \
 X86MAC64/mrcImageInfo.debugo \
 X86MAC64/mrcImageInit.debugo \
 X86MAC64/mrcImageOperation.debugo \
@@ -1115,6 +1127,7 @@ X86MAC64/mrcImagefuncmin.debugo \
 X86MAC64/mrcRefUtil.debugo \
 X86MAC64/lmrcImageAddValueCuda.debugo \
 X86MAC64/lmrcImageClusterAnalysis.debugo \
+X86MAC64/mrcImageGetPixelsCUDA.debugo \
 
 OBJCUDAGDB = \
 fftn.cudagdb.o \
@@ -1256,6 +1269,7 @@ mrcImageCopy.cudagdb.o \
 mrcImageDataSet.cudagdb.o \
 mrcImageError.cudagdb.o \
 mrcImageGet.cudagdb.o \
+mrcImageGetPixels.cudagdb.o \
 mrcImageInfo.cudagdb.o \
 mrcImageInit.cudagdb.o \
 mrcImageOperation.cudagdb.o \
@@ -1275,6 +1289,7 @@ mrcImagefuncmin.cudagdb.o \
 mrcRefUtil.cudagdb.o \
 lmrcImageAddValueCuda.cudagdb.o  \
 lmrcImageClusterAnalysis.cudagdb.o  \
+mrcImageGetPixelsCUDA.cudagdb.o  \
 
 REALOBJCUDAGDB = \
 X86MAC64/fftn.cudagdb.o \
@@ -1416,6 +1431,7 @@ X86MAC64/mrcImageCopy.cudagdb.o \
 X86MAC64/mrcImageDataSet.cudagdb.o \
 X86MAC64/mrcImageError.cudagdb.o \
 X86MAC64/mrcImageGet.cudagdb.o \
+X86MAC64/mrcImageGetPixels.cudagdb.o \
 X86MAC64/mrcImageInfo.cudagdb.o \
 X86MAC64/mrcImageInit.cudagdb.o \
 X86MAC64/mrcImageOperation.cudagdb.o \
@@ -1435,5 +1451,6 @@ X86MAC64/mrcImagefuncmin.cudagdb.o \
 X86MAC64/mrcRefUtil.cudagdb.o \
 X86MAC64/lmrcImageAddValueCuda.cudagdb.o \
 X86MAC64/lmrcImageClusterAnalysis.cudagdb.o \
+X86MAC64/mrcImageGetPixelsCUDA.cudagdb.o \
 
 
index bdaa1f4..94c1b1e 100644 (file)
Binary files a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.a and b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.a differ
index 23eeace..8caad0c 100644 (file)
Binary files a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.debug.a and b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/libmrcImage.debug.a differ
diff --git a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixels.c b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixels.c
new file mode 120000 (symlink)
index 0000000..e90a652
--- /dev/null
@@ -0,0 +1 @@
+../mrcImageGetPixels.c
\ No newline at end of file
diff --git a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixels.sharedo b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixels.sharedo
new file mode 100644 (file)
index 0000000..e5d12dc
Binary files /dev/null and b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixels.sharedo differ
diff --git a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixelsCUDA.cu b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixelsCUDA.cu
new file mode 120000 (symlink)
index 0000000..04cf31f
--- /dev/null
@@ -0,0 +1 @@
+../mrcImageGetPixelsCUDA.cu
\ No newline at end of file
diff --git a/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixelsCUDA.sharedo b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixelsCUDA.sharedo
new file mode 100644 (file)
index 0000000..857302b
Binary files /dev/null and b/hostdepend/X86MAC64/src/Objects/DataManip/mrcImage/src/X86MAC64/mrcImageGetPixelsCUDA.sharedo differ
index a429553..bdf6a4a 100755 (executable)
@@ -20,7 +20,7 @@ $(LIBNAME): $(OBJ)
 
 $(SHAREDLIB): $(SHAREDOBJ)
        @COMPILEDOBJ=`ls $(SHAREDOBJ)` ; echo "#### Compiled Objects"; echo $${COMPILEDOBJ};  echo "################"; \
-       $(SHARED) $(SHAREDLIB) $${COMPILEDOBJ
+       COMMAND="$(SHARED) $(SHAREDLIB) $${COMPILEDOBJ}" ; echo $${COMMAND}; $${COMMAND
 
 debug: $(LIBNAMEDEBUG) $(LIBNAMECUDAGDB)
 
index c38b19e..879f0b3 100644 (file)
Binary files a/hostdepend/X86MAC64/src/Objects/General/eosCuda/src/X86MAC64/eosCuda.sharedo and b/hostdepend/X86MAC64/src/Objects/General/eosCuda/src/X86MAC64/eosCuda.sharedo differ
index da92a5c..4f439c1 100644 (file)
Binary files a/hostdepend/X86MAC64/src/Objects/General/eosCuda/src/X86MAC64/libeosCuda.a and b/hostdepend/X86MAC64/src/Objects/General/eosCuda/src/X86MAC64/libeosCuda.a differ
index 15d8656..4368237 100644 (file)
@@ -121,10 +121,16 @@ mrcImagePixelDataGet.o: mrcImagePixelDataGet.c /usr/include/stdio.h \
   /usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
   /Users/tacyas/Eos/include/string.h /usr/include/math.h ../inc/config.h \
   ../inc/../inc/mrcImagePixelDataGet.h \
-  /Users/tacyas/Eos/include/genUtil.h \
-  /Users/tacyas/Eos/include/mrcImage.h \
-  /Users/tacyas/Eos/include/ctfInfo.h /Users/tacyas/Eos/include/Vector.h \
-  /Users/tacyas/Eos/include/Matrix3D.h /Users/tacyas/Eos/include/Array.h
+  /Users/tacyas/Eos/include/genUtil.h /Users/tacyas/Eos/include/Memory.h \
+  /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/limits.h \
+  /usr/include/limits.h /usr/include/machine/limits.h \
+  /usr/include/i386/limits.h /usr/include/i386/_limits.h \
+  /usr/include/sys/syslimits.h /Users/tacyas/Eos/include/mrcImage.h \
+  /Users/tacyas/Eos/include/Matrix3D.h \
+  /Users/tacyas/Eos/include/Vector.h /Users/tacyas/Eos/include/Array.h \
+  /Users/tacyas/Eos/include/ctfInfo.h \
+  /Users/tacyas/Eos/include/eosPoint.h \
+  /Users/tacyas/Eos/include/eosCuda.h
 usage.o: usage.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
   /usr/include/sys/_symbol_aliasing.h \
   /usr/include/sys/_posix_availability.h /usr/include/Availability.h \
index 03a1a96..905f1c3 100755 (executable)
Binary files a/hostdepend/X86MAC64/src/Tools/mrcImage/mrcImagePixelDataGet/src/X86MAC64/mrcImagePixelDataGet and b/hostdepend/X86MAC64/src/Tools/mrcImage/mrcImagePixelDataGet/src/X86MAC64/mrcImagePixelDataGet differ
index 773d165..5db834d 100644 (file)
@@ -27,6 +27,7 @@
 #include <stdio.h>
 #include <math.h>
 #include "genUtil.h"
+#include "Matrix3D.h"
 
 /* struct begin */
 
@@ -607,6 +608,9 @@ extern double mrcPixelDataGet(mrcImage* mrc,
                              mrcPixelDataType mode,
                              mrcPixelDataHowToGet how);
 
+extern void mrcPixelsDataGet(float* data, mrcImageParaTypeRealCoord* inCoord, int nPixel, mrcImage* in, mrcPixelDataType type, mrcPixelDataHowToGet howto);
+extern void mrcPixelDataGetbyMatrix3D(mrcImage* out, mrcImage* in, Matrix3D mat, mrcPixelDataHowToGet mode, int mode2);
+
 static inline double mrcPixelDataGetFloatImage(mrcImage* img, 
                mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z)
 {
diff --git a/include/mrcImageGetPixelsCUDA.h b/include/mrcImageGetPixelsCUDA.h
new file mode 100644 (file)
index 0000000..5508445
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+# mrcImageGetPixelsCUDA.h : $Revision$  
+# $Date$ 
+# Created by $Author$
+# Usage : mrcImageGetPixelsCUDA.h 
+# Attention
+#   $Loccker$
+#      $State$ 
+#
+*/
+/* $Log$ */
+#ifndef MRCIMAGE_GET_PIXELS_CUDA_H 
+#define MRCIMAGE_GET_PIXELS_CUDA_H  
+
+#include <stdio.h>
+
+/* constant begin */
+
+
+/* constant end */
+
+/* struct begin */
+
+
+/* struct end */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* prototype begin */
+
+extern void mrcPixelsDataGetCUDA(float* out, float* inCoord, int num, float* in, mrcImageMode imageMode,  int nx, int ny, int nz, mrcPixelDataType type,  mrcPixelDataHowToGet howToMode);
+
+
+extern void mrcPixelDataGetbyMatrix3DCUDA(float* out, float* mat, float* in, mrcImageMode imageMode, int nx, int ny, int nz, mrcPixelDataType type, mrcPixelDataHowToGet howToMode);
+
+
+/* prototype end */
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif  /*  MRCIMAGE_GET_PIXELS_CUDA_H */ 
index 7b98ba4..54255b5 100755 (executable)
@@ -229,15 +229,15 @@ CUDACCOPTSDEBUG = -O2 -g $(EXTRA_DEFINE) $(ARCHTYPE) \
 
 #NVCC = nvcc 
 NVCC =  /Developer/NVIDIA/CUDA-5.5/bin/nvcc -ccbin /usr/bin/clang
-NVCCOPTS = $(CUDACCOPTS) --host-compilation='C++' -ccbin /usr/bin/clang \
+NVCCOPTS = $(CUDACCOPTS) --host-compilation='C++' \
                        -I../../common/inc  -m64 \
                        -Xcompiler -arch -Xcompiler x86_64 -Xcompiler -stdlib=libstdc++   \
                        -gencode arch=compute_10,code=sm_10 
-NVCCOPTSGDB = $(CUDACCOPTSDEBUG) -g -G --host-compilation='C++' -ccbin /usr/bin/clang \
+NVCCOPTSGDB = $(CUDACCOPTSDEBUG) -g -G --host-compilation='C++' \
                        -I../../common/inc  -m64 \
                        -Xcompiler -arch -Xcompiler x86_64 -Xcompiler -stdlib=libstdc++   \
                        -gencode arch=compute_10,code=sm_10 
-NVCCOPTSCUDAGDB = -g -G --host-compilation='C++' -ccbin /usr/bin/clang \
+NVCCOPTSCUDAGDB = -g -G --host-compilation='C++' \
                        -I../../common/inc  -m64 \
                        -Xcompiler -arch -Xcompiler x86_64 -Xcompiler -stdlib=libstdc++   \
                        -gencode arch=compute_10,code=sm_10 
index a9090b6..4abed3d 100755 (executable)
 #include <stdio.h>
 #include <math.h>
 #include "genUtil.h"
+#include "Matrix3D.h"
 
 /* struct begin */
 
@@ -718,6 +719,9 @@ extern double mrcPixelDataGet(mrcImage* mrc,
                              mrcPixelDataType mode,
                              mrcPixelDataHowToGet how);
 
+extern void mrcPixelsDataGet(float* data, mrcImageParaTypeRealCoord* inCoord, int nPixel, mrcImage* in, mrcPixelDataType type, mrcPixelDataHowToGet howto);
+extern void mrcPixelDataGetbyMatrix3D(mrcImage* out, mrcImage* in, Matrix3D mat, mrcPixelDataHowToGet mode, int mode2);
+
 static inline double mrcPixelDataGetFloatImage(mrcImage* img, 
                mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z)
 {
index 773d165..5db834d 100755 (executable)
@@ -27,6 +27,7 @@
 #include <stdio.h>
 #include <math.h>
 #include "genUtil.h"
+#include "Matrix3D.h"
 
 /* struct begin */
 
@@ -607,6 +608,9 @@ extern double mrcPixelDataGet(mrcImage* mrc,
                              mrcPixelDataType mode,
                              mrcPixelDataHowToGet how);
 
+extern void mrcPixelsDataGet(float* data, mrcImageParaTypeRealCoord* inCoord, int nPixel, mrcImage* in, mrcPixelDataType type, mrcPixelDataHowToGet howto);
+extern void mrcPixelDataGetbyMatrix3D(mrcImage* out, mrcImage* in, Matrix3D mat, mrcPixelDataHowToGet mode, int mode2);
+
 static inline double mrcPixelDataGetFloatImage(mrcImage* img, 
                mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z)
 {
index ea2784e..04a3c09 100755 (executable)
@@ -92,6 +92,7 @@ lmrcSinogramFETcorrelationMap.h \
 lmrcSinogramFETnormalizedMap.h \
 lmrcSinogramFETreferredCorrelation.h \
 lmrcSinogramFETsmoothParameterMatching.h \
+mrcImageGetPixelsCUDA.h \
 mrcImagePVM.h \
 mrcImagefuncmin.h \
 
diff --git a/src/Objects/DataManip/mrcImage/src/mrcImageGetPixels.c b/src/Objects/DataManip/mrcImage/src/mrcImageGetPixels.c
new file mode 100644 (file)
index 0000000..ec8d264
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+# %M% %Y% %I%
+# The latest update : %G% at %U%
+#
+#%Z% mrcImageGetPixels ver %I%
+#%Z% Created by 
+#%Z%
+#%Z% Usage : mrcImageGetPixels 
+#%Z% Attention
+#%Z%
+*/
+static char __sccs_id[] = "%Z%mrcImageGetPixels ver%I%; Date:%D% %Z%";
+
+#define DEBUG
+#include "genUtil.h"
+#include "Memory.h"
+#include "eosCuda.h"
+#include "../inc/mrcImage.h"
+#include "./mrcImageGetPixelsCUDA.h"
+
+void
+mrcPixelsDataGet(float* data, mrcImageParaTypeRealCoord* inCoord, int nPixel, mrcImage* in, mrcPixelDataType type, mrcPixelDataHowToGet howto)
+{
+       int i;
+       double d;
+
+       DEBUGPRINT("mrcPixelsDataGet Start\n");
+       if(__eosCuda__) {
+#ifdef CUDA
+               if(sizeof(float)*3!=sizeof(mrcImageParaTypeRealCoord)) {
+                       fprintf(stderr, "mrcImageParaTypeRealCoord is not float*3.\n");
+                       exit(EXIT_FAILURE);
+               } else {
+                       DEBUGPRINT("mrcImageParaTypeRealCoord is float*3.\n");
+               }
+               mrcPixelsDataGetCUDA(data, (float*)inCoord, nPixel, in->ImageFloatImage, in->HeaderMode, in->HeaderN.x, in->HeaderN.y, in->HeaderN.z, type, howto);
+#else
+               fprintf(stderr, "Not suppported CUDA\n");
+               exit(EXIT_FAILURE);
+#endif
+       } else {
+               for(i=0; i<nPixel; i++) {
+                       mrcPixelDataGet(in, inCoord[i].x, inCoord[i].y, inCoord[i].z, &d, type, howto); 
+                       DEBUGPRINT4("%f %f %f : %f\n", inCoord[i].x, inCoord[i].y, inCoord[i].z, d);
+                       data[i] = d;
+               }
+       }
+}
+
+void
+mrcPixelDataGetbyMatrix3D(mrcImage* out, mrcImage* in, 
+       Matrix3D mat,
+       mrcPixelDataHowToGet mode, int mode2)
+{
+       mrcImageParaTypeReal srcx, srcy, srcz;
+       mrcImageParaTypeReal dstx, dsty, dstz;
+       mrcImageParaTypeReal gx, gy, gz;
+       floatVector v;
+       double data;
+       double offset;
+
+       out->Header =  in->Header;
+       mrcInit(out, NULL);
+
+       floatVectorInit(&v, 4);
+       v.data[3] = 1;
+       gx = (in->HeaderN.x - 1)/2.0;
+       gy = (in->HeaderN.y - 1)/2.0;
+       gz = (in->HeaderN.z - 1)/2.0;
+
+       switch(mode2&0xf) {
+               case 1: {
+                       offset = in->HeaderAMean;       
+                       break;
+               }
+               default: {
+                       offset = 0.0;
+                       break;
+               }
+       }
+
+       for(dstz=0; dstz<out->HeaderN.z; dstz++) {
+       for(dsty=0; dsty<out->HeaderN.y; dsty++) {
+       for(dstx=0; dstx<out->HeaderN.x; dstx++) {
+               v.data[0] = dstx - gx;
+               v.data[1] = dsty - gy;
+               v.data[2] = dstz - gz;
+               matrix3DMultiplyVector(&v, mat);
+
+               switch(mode2&0xf0) {
+                       case 0: 
+                               if(SQR(v.data[0]/gx)+SQR(v.data[1]/gy)+SQR(v.data[2]/gz)<=1) {
+                                       srcx = v.data[0] + gx;
+                                       srcy = v.data[1] + gy;
+                                       srcz = v.data[2] + gz;
+                                       mrcPixelDataGet(in,  srcx, srcy, srcz, &data, mrcPixelRePart, mode);
+                                       mrcPixelDataSet(out, dstx, dsty, dstz, data, mrcPixelRePart);
+                               } else {
+                                       mrcPixelDataSet(out, dstx, dsty, dstz, offset, mrcPixelRePart);
+                               }
+                               break;
+                       case 16:        
+                               srcx = v.data[0] + gx;
+                               srcy = v.data[1] + gy;
+                               srcz = v.data[2] + gz;
+                               mrcPixelDataGet(in,  srcx, srcy, srcz, &data, mrcPixelRePart, mode);
+                               mrcPixelDataSet(out, dstx, dsty, dstz, data, mrcPixelRePart);
+                               break;
+                       
+               }
+       }
+       }
+       }
+}
diff --git a/src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.cu b/src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.cu
new file mode 100644 (file)
index 0000000..fe15709
--- /dev/null
@@ -0,0 +1,334 @@
+/*
+# %M% %Y% %I%
+# The latest update : %G% at %U%
+#
+#%Z% mrcImageGetPixelsCUDA.cu ver %I%
+#%Z% Created by 
+#%Z%
+#%Z% Usage : mrcImageGetPixelsCUDA.cu 
+#%Z% Attention
+#%Z%
+*/
+static char __sccs_id[] = "%Z%mrcImageGetPixelsCUDA.cu ver%I%; Date:%D% %Z%";
+
+#include <stdio.h>
+#include <cuda.h>
+#define DEBUG
+#include "genUtil.h"
+#include "eosCuda.h"
+#include "../inc/mrcImage.h"
+#include "./mrcImageGetPixelsCUDA.h"
+
+
+__device__ float mrcPixelDataGetDevice(float x, float y, float z, float* inD, int nx, int ny, int nz, mrcPixelDataHowToGet howToMode)
+{
+       float data;
+
+       switch(howToMode) {
+               case mrcPixelHowNearest: {
+                       int   ix, iy, iz;
+                       int   n;
+                       ix = (int)(x+0.5);
+                       iy = (int)(y+0.5);
+                       iz = (int)(z+0.5);
+
+                       n = ix + iy*nx + iz*nx*ny;
+                       data = inD[n];
+                       break;
+               }
+               case mrcPixelHowLinear: {
+                       int   ix0, iy0, iz0;
+                       int   ix1, iy1, iz1;
+
+                       if(1<ny && 1<nz) { // 3D  
+                               int n000, n001, n010, n011;     
+                               int n100, n101, n110, n111;     
+                               float data000, data010, data100, data110;
+                               float data001, data011, data101, data111;
+
+                               ix0 = (int)x;
+                               iy0 = (int)y;
+                               iz0 = (int)z;
+                               ix1 = ix0+1;
+                               iy1 = iy0+1;
+                               iz1 = iz0+1;
+
+                               n000 = ix0 + iy0*nx + iz0*nx*ny; 
+                               n010 = ix0 + iy1*nx + iz0*nx*ny;
+                               n100 = ix1 + iy0*nx + iz0*nx*ny;
+                               n110 = ix1 + iy1*nx + iz0*nx*ny;
+                               n001 = ix0 + iy0*nx + iz1*nx*ny; 
+                               n011 = ix0 + iy1*nx + iz1*nx*ny;
+                               n101 = ix1 + iy0*nx + iz1*nx*ny;
+                               n111 = ix1 + iy1*nx + iz1*nx*ny;
+
+                               data000 = inD[n000];
+                               data010 = inD[n010];
+                               data100 = inD[n100];
+                               data110 = inD[n110];
+                               data001 = inD[n001];
+                               data011 = inD[n011];
+                               data101 = inD[n101];
+                               data111 = inD[n111];
+
+                               data = (ix1 - x  )*(iy1 - y  )*(iz1 - z  )*data000 
+                                        + (ix1 - x  )*(y   - iy0)*(iz1 - z  )*data010
+                                        + (x   - ix0)*(iy1 - y  )*(iz1 - z  )*data100
+                                        + (x   - ix0)*(y   - iy0)*(iz1 - z  )*data110
+                                        + (ix1 - x  )*(iy1 - y  )*(z   - iz0)*data001 
+                                        + (ix1 - x  )*(y   - iy0)*(z   - iz0)*data011
+                                        + (x   - ix0)*(iy1 - y  )*(z   - iz0)*data101
+                                        + (x   - ix0)*(y   - iy0)*(z   - iz0)*data111;
+
+                       } else if(1<ny) { // 2D 
+                               int n00, n01, n10, n11; 
+                               float data00, data01, data10, data11;
+
+                               ix0 = (int)x;
+                               iy0 = (int)y;
+                               ix1 = ix0+1;
+                               iy1 = iy0+1;
+
+                               n00 = ix0 + iy0*nx;
+                               n01 = ix0 + iy1*nx;
+                               n10 = ix1 + iy0*nx;
+                               n11 = ix1 + iy1*nx;
+
+                               data00 = inD[n00];
+                               data01 = inD[n01];
+                               data10 = inD[n10];
+                               data11 = inD[n11];
+
+                               data = (ix1 - x  )*(iy1 - y  )*data00 
+                                        + (ix1 - x  )*(y   - iy0)*data01
+                                        + (x   - ix0)*(iy1 - y  )*data10
+                                        + (x   - ix0)*(y   - iy0)*data11;
+                       } else { // 1D
+                               int n0, n1;     
+                               float data0, data1;
+
+                               ix0 = (int)x;
+                               ix1 = ix0+1;
+
+                               n0 = ix0;
+                               n1 = ix1;
+                               data0 = inD[n0];
+                               data1 = inD[n1];
+
+                               data = (ix1 - x  )*data0 
+                                        + (x   - ix0)*data1; 
+                       }
+                       break;
+               }
+               case mrcPixelHowCubicConv: {
+                       break;
+               }
+               case mrcPixelHowPolySig: {
+                       break;
+               }
+               default: {
+                       break;
+               }
+       }
+               
+       return data;
+}
+
+__global__ void mrcPixelsDataGetKernel(float* outD, float* inCoordD, int num, float* inD, int nx, int ny, int nz, mrcPixelDataHowToGet howToMode)
+{
+       int offset = threadIdx.x + blockIdx.x*blockDim.x; 
+
+       if(offset<num) {
+               float x, y, z;
+
+               x = inCoordD[3*offset+0];       
+               y = inCoordD[3*offset+1];       
+               z = inCoordD[3*offset+2];       
+
+               outD[offset] = mrcPixelDataGetDevice(x, y, z, inD, nx, ny, nz, howToMode);
+       }
+}
+
+__global__ void mrcPixelDataGetbyMatrix3DKernel(float* outD, float* matD, float* inD, int nx, int ny, int nz, mrcPixelDataHowToGet howToMode)
+{
+       int offset = threadIdx.x + blockIdx.x*blockDim.x; 
+       int num = nx*ny*nz;
+
+       if(offset<num) {
+               float dstx, dsty, dstz;
+               float srcx, srcy, srcz;
+               float x, y, z;
+
+               // offset = dstx + dsty*nx + dstz*nx*ny; // 3D
+               // offset = dstx + dsty*nx;              // 2D
+               // offset = dstx ;                       // 1D
+               if(1<ny && 1<nz) { // 3D
+                       dstz = offset/(nx*ny);
+                       dsty = (offset - dstz*nx*ny)/nx;        
+                       dstx = (offset - dstz*nx*ny - dsty*nx); 
+               } else if(1<ny) { // 2D
+                       dstz = 0;
+                       dsty = offset/nx;
+                       dstx = offset%nx;
+               } else {          // 1D
+                       dstz = 0;
+                       dsty = 0;
+                       dstx = offset;
+               }
+               x = dstx - matD[3*4 + 0]; 
+               y = dsty - matD[3*4 + 1];
+               z = dstz - matD[3*4 + 2]; 
+               srcx = matD[0*4+0]*x + matD[0*4+1]*y + matD[0*4+2]*z;
+               srcy = matD[1*4+0]*x + matD[1*4+1]*y + matD[1*4+2]*z;
+               srcz = matD[2*4+0]*x + matD[2*4+1]*y + matD[2*4+2]*z;
+               outD[offset] = mrcPixelDataGetDevice(srcx, srcy, srcz, inD, nx, ny, nz, howToMode);
+       }
+}
+
+
+void
+mrcPixelsDataGetCUDA(float* out, float* inCoord, int num, float* in, mrcImageMode imageMode,  int nx, int ny, int nz, mrcPixelDataType type,  mrcPixelDataHowToGet howToMode)
+{
+       cudaError_t err = cudaSuccess;
+       int nPixel = nx*ny*nz;
+       
+       DEBUGPRINT("mrcPixelsDataGetCUDA start ----> \n");      
+
+       switch(imageMode) {
+               case mrcFloatImage: {
+                       float* inD;
+                       float* outD;
+                       float* inCoordD;
+
+                       // inD
+                       DEBUGPRINT3("%d %p -> %p\n", nPixel, in, out);
+                       err = cudaMalloc((void **)&inD,  sizeof(float)*nPixel);
+                       if(err !=  cudaSuccess) {
+                               fprintf(stderr, "Memory Not Allocated\n");
+                               exit(EXIT_FAILURE);
+                       } else {
+                               DEBUGPRINT("Success cudaMalloc\n");
+                       }
+                       // outD
+                       err = cudaMalloc((void **)&outD,  sizeof(float)*num);
+                       if(err !=  cudaSuccess) {
+                               fprintf(stderr, "Memory Not Allocated\n");
+                               exit(EXIT_FAILURE);
+                       } else {
+                               DEBUGPRINT("Success cudaMalloc\n");
+                       }
+                       // inCoordD
+                       err = cudaMalloc((void **)&inCoordD,  sizeof(float)*num*3);
+                       if(err !=  cudaSuccess) {
+                               fprintf(stderr, "Memory Not Allocated\n");
+                               exit(EXIT_FAILURE);
+                       } else {
+                               DEBUGPRINT("Success cudaMalloc\n");
+                       }
+                       
+                       // in -> inD
+                       cudaMemcpy(inD, in, sizeof(float)*nPixel, cudaMemcpyHostToDevice);
+                       // inCoord -> inD
+                       cudaMemcpy(inCoordD, inCoord, sizeof(float)*3*num, cudaMemcpyHostToDevice);
+
+                       if(err !=  cudaSuccess) {
+                               fprintf(stderr, "cudaMemcpy\n");
+                               exit(EXIT_FAILURE);
+                       } else {
+                               DEBUGPRINT("Success cudaMemcpy: HostToDevice\n");
+                       }
+                       mrcPixelsDataGetKernel<<<num/__eosCudaThreadsPerBlock__,__eosCudaThreadsPerBlock__>>>(outD, inCoordD, num, inD, nx, ny, nz, howToMode);
+                       
+                       cudaMemcpy(out, outD, sizeof(float)*num, cudaMemcpyDeviceToHost);
+                       if(err !=  cudaSuccess) {
+                               fprintf(stderr, "cudaMemcpy\n");
+                               exit(EXIT_FAILURE);
+                       } else {
+                               DEBUGPRINT("Success cudaMemcpy: DeviceToHost\n");
+                       }
+                       cudaFree(inD);
+                       cudaFree(inCoordD);
+                       cudaFree(outD);
+                       break;
+               }
+               default: {
+                       fprintf(stderr, "Not supported mode in mrcPixelDataGetCUDA: %d\n", imageMode);
+                       exit(EXIT_FAILURE);
+                       break;
+               }
+       }
+}
+
+
+void
+mrcPixelDataGetbyMatrix3DCUDA(float* out, float* mat, float* in, mrcImageMode imageMode, int nx, int ny, int nz, mrcPixelDataType type, mrcPixelDataHowToGet howToMode)
+{
+       cudaError_t err = cudaSuccess;
+       int nPixel = nx*ny*nz;
+
+       switch(imageMode) {
+               case mrcFloatImage: {
+                       float* inD;
+                       float* outD;
+                       float* matD;
+
+                       // inD
+                       DEBUGPRINT3("%d %p -> %p\n", nPixel, in, out);
+                       err = cudaMalloc((void **)&inD,  sizeof(float)*nPixel);
+                       if(err !=  cudaSuccess) {
+                               fprintf(stderr, "Memory Not Allocated\n");
+                               exit(EXIT_FAILURE);
+                       } else {
+                               DEBUGPRINT("Success cudaMalloc\n");
+                       }
+                       // outD
+                       err = cudaMalloc((void **)&outD,  sizeof(float)*nPixel);
+                       if(err !=  cudaSuccess) {
+                               fprintf(stderr, "Memory Not Allocated\n");
+                               exit(EXIT_FAILURE);
+                       } else {
+                               DEBUGPRINT("Success cudaMalloc\n");
+                       }
+                       // matD 
+                       err = cudaMalloc((void **)&matD,  sizeof(float)*4*4);
+                       if(err !=  cudaSuccess) {
+                               fprintf(stderr, "Memory Not Allocated\n");
+                               exit(EXIT_FAILURE);
+                       } else {
+                               DEBUGPRINT("Success cudaMalloc\n");
+                       }
+                       
+                       // in -> inD
+                       cudaMemcpy(inD, in, sizeof(float)*nPixel, cudaMemcpyHostToDevice);
+                       // inCoord -> inD
+                       cudaMemcpy(matD, mat, sizeof(float)*4*4, cudaMemcpyHostToDevice);
+
+                       if(err !=  cudaSuccess) {
+                               fprintf(stderr, "cudaMemcpy\n");
+                               exit(EXIT_FAILURE);
+                       } else {
+                               DEBUGPRINT("Success cudaMemcpy: HostToDevice\n");
+                       }
+                       mrcPixelDataGetbyMatrix3DKernel<<<nPixel/__eosCudaThreadsPerBlock__,__eosCudaThreadsPerBlock__>>>(outD, matD, inD, nx, ny, nz, howToMode);
+                       
+                       cudaMemcpy(out, outD, sizeof(float)*nPixel, cudaMemcpyDeviceToHost);
+                       if(err !=  cudaSuccess) {
+                               fprintf(stderr, "cudaMemcpy\n");
+                               exit(EXIT_FAILURE);
+                       } else {
+                               DEBUGPRINT("Success cudaMemcpy: DeviceToHost\n");
+                       }
+                       cudaFree(inD);
+                       cudaFree(matD);
+                       cudaFree(outD);
+                       break;
+               }
+               default: {
+                       fprintf(stderr, "Not supported mode in mrcPixelDataGetCUDA: %d\n", imageMode);
+                       exit(EXIT_FAILURE);
+                       break;
+               }
+       }
+
+}
+
diff --git a/src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.h b/src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.h
new file mode 100644 (file)
index 0000000..5508445
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+# mrcImageGetPixelsCUDA.h : $Revision$  
+# $Date$ 
+# Created by $Author$
+# Usage : mrcImageGetPixelsCUDA.h 
+# Attention
+#   $Loccker$
+#      $State$ 
+#
+*/
+/* $Log$ */
+#ifndef MRCIMAGE_GET_PIXELS_CUDA_H 
+#define MRCIMAGE_GET_PIXELS_CUDA_H  
+
+#include <stdio.h>
+
+/* constant begin */
+
+
+/* constant end */
+
+/* struct begin */
+
+
+/* struct end */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* prototype begin */
+
+extern void mrcPixelsDataGetCUDA(float* out, float* inCoord, int num, float* in, mrcImageMode imageMode,  int nx, int ny, int nz, mrcPixelDataType type,  mrcPixelDataHowToGet howToMode);
+
+
+extern void mrcPixelDataGetbyMatrix3DCUDA(float* out, float* mat, float* in, mrcImageMode imageMode, int nx, int ny, int nz, mrcPixelDataType type, mrcPixelDataHowToGet howToMode);
+
+
+/* prototype end */
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif  /*  MRCIMAGE_GET_PIXELS_CUDA_H */ 
diff --git a/src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.h.org b/src/Objects/DataManip/mrcImage/src/mrcImageGetPixelsCUDA.h.org
new file mode 100644 (file)
index 0000000..e69de29
index 04e9e5d..ec4eaf0 100755 (executable)
@@ -146,3 +146,6 @@ WORLDNAME=Tools
 WORLDNAME=Tools
 WORLDNAME=Tools
 WORLDNAME=Tools
+WORLDNAME=Tools
+WORLDNAME=Tools
+WORLDNAME=Tools
index 93892b7..ae2cf22 100755 (executable)
@@ -1,4 +1,4 @@
 OBJECTNAME = mrcImagePixelDataGet
-EXTRA_LIB  =
+EXTRA_LIB  = $(LIBCUDA)
 EXTRA_CCOPTS =
 EXTRA_INC =
index 84d8cba..088699d 100755 (executable)
@@ -1,9 +1,11 @@
 # OptionControlFile
 # FileFormat
-"-i","-i[nput]","InputDataFile","Essential","1","1","In","inFile","NULL"
-"-o","-o[utput]","OutputDataFile","Optional","1","1","Out","outFile","stdout"
+"-i","-i[nput]","Input: mrcImage","Essential","1","1","In","inFile::mrcImage","NULL"
+"-o","-o[utput]","OutputDataFile","Optional","1","1","Out","outFile::ASCII","stdout"
 "-x","-x","Input: x","Optional","1","1","x","Real","0.0"
 "-y","-y","Input: y","Optional","1","1","y","Real","0.0"
 "-z","-z","Input: z","Optional","1","1","z","Real","0.0"
+"-In","-In[put]","Input:eosPoint","Optional","1","1","InCoord","inFile::ASCII","stdin"
+"-cuda","-cuda","cudaDeviceID","Optional","1","1","cudaDeviceID","Integer","0"
 "-c","-c[onfig]","ConfigurationFile","Optional","1","1","configFile","inFile","NULL"
 "-m","-m[ode]","Mode","Optional","1","1","mode","Integer","0"
deleted file mode 100755 (executable)
index 4dbb018acae5475bce203b3db2365124accfa24b..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,104 +0,0 @@
-include ../../../Config/Define.inc
-include ../../Config/Define.inc
-include ../Config/Define.inc
-include Config/Define.inc
-
-all:
-       cd src; make all; cd ..
-
-install:
-       cd src; make install; cd ..
-
-
-putSF:
-       if [ -f private ] ; \
-       then \
-               echo "$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME) is private"; \
-       else \
-               cvs -z4 -d:ext:$$USER@$$EOS_SOURCEFORGE commit || cvs -z4 -d:ext:$$USER@$$EOS_SOURCEFORGE import src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME); \
-       fi
-
-put:
-       cd src; make put; cd ..
-
-clean:
-       cd src; make clean; cd ..
-
-depend:
-       cd src; make depend; cd ..
-
-check:
-       @if [ ! -d $(EOS_HOME)/hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE) ] ; then \
-               echo making directory; \
-               mkdir -p $(EOS_HOME)/hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE); \
-       fi
-       ln -sf ../../../../../hostdepend/$(OSTYPE)/src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE) src/$(OSTYPE); 
-       @$(RM) src/Makefile
-       @echo "New src/Makefile" 
-       @$(CP) ../../../Config/Template/$(WORLDNAME)Template.Dir/src/Makefile src/Makefile
-       @cd src; touch $(OSTYPE)/.Depend; make depend
-
-cvsupdate::
-       cvs -d $(EOS_CVSROOT) update -d 
-
-cvscommit::
-       cvs -d $(EOS_CVSROOT) commit
-
-backup:
-       @cd ../../../..;     \
-       echo $(OBJECTNAME) ; \
-       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config       ; \
-       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
-       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
-       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
-       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
-       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
-       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
-       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
-       tar uvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile
-
-backup-all:
-       @cd ../../../..;     \
-       echo $(OBJECTNAME) ; \
-       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config       ; \
-       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
-       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
-       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
-       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
-       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
-       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
-       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
-       tar rvf ${EOS_HOME}/backup/EosBase.tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile
-       
-distribute:
-       cd ../../../..;     \
-       echo $(OBJECTNAME) ; \
-       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config     ; \
-       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
-       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
-       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
-       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
-       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
-       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
-       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
-       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile ; \
-       tar uvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE)
-       
-distribute-all:
-       @cd ../../../..;     \
-       echo $(OBJECTNAME) ; \
-       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Config     ; \
-       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/Makefile ;\
-       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/.[A-z]* ; \
-       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/inc ; \
-       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/doc; \
-       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/wish; \
-       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/[A-z]*.[A-z]*; \
-       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/.[A-z]*; \
-       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/Makefile ; \
-       tar rvf ${EOS_HOME}/distribute/src.$(OSTYPE).tar src/$(WORLDNAME)/$(CLASSNAME)/$(OBJECTNAME)/src/$(OSTYPE)
-
-eosintroduce:
-       ${EOS_HOME}/sbin/eosintroduce ${WORLDNAME} ${CLASSNAME} ${OBJECTNAME} ./ 
-
-include Config/Target.inc
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..ef1f6300ba0b84da4931ed574ccec31fc5b88177
--- /dev/null
@@ -0,0 +1 @@
+/Users/tacyas/Eos/src/Config/Template/ToolsTemplate.Dir/Makefile
\ No newline at end of file
index e35804f..d75d753 120000 (symlink)
@@ -1 +1 @@
-/home/people/tacyas/Eos/src/Config/Template/ToolsTemplate.Dir/doc/Makefile
\ No newline at end of file
+/Users/tacyas/Eos/src/Config/Template/ToolsTemplate.Dir/doc/Makefile
\ No newline at end of file
index 3f51566..47fa054 100755 (executable)
@@ -30,6 +30,13 @@ typedef struct mrcImagePixelDataGetInfo {
     long flagz;
     float z;
     
+    long flagInCoord;
+    char* InCoord;
+    FILE* fptInCoord;
+    
+    long flagcudaDeviceID;
+    long cudaDeviceID;
+    
     long flagconfigFile;
     char* configFile;
     FILE* fptconfigFile;
index 43643df..9241902 100755 (executable)
@@ -12,7 +12,7 @@
 void
 argCheck(mrcImagePixelDataGetInfo* info, int argc, char* argv[])
 {
-    long i, j, nv;
+    long i;
     char s[1024];
     FILE* fpt;
     
@@ -83,6 +83,28 @@ argCheck(mrcImagePixelDataGetInfo* info, int argc, char* argv[])
                     }
                     SBREAK;
                 }
+                SCASE("In") {
+                    if(i+1<argc) {
+                        info->InCoord = stringGetNthWord(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagInCoord++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
+                SCASE("cuda") {
+                    if(i+1<argc) {
+                        info->cudaDeviceID = stringGetNthIntegerData(argv[i+1], 1, " ,");
+                        i++;
+                        info->flagcudaDeviceID++;
+                    } else {
+                        usage(argv[0]);
+                        exit(EXIT_FAILURE);
+                    }
+                    SBREAK;
+                }
                 SCASE("c") {
                     if(i+1<argc) {
                         info->configFile = stringGetNthWord(argv[i+1], 1, " ,");
index 9fef5a4..5f046f4 100755 (executable)
@@ -17,6 +17,8 @@ init0(mrcImagePixelDataGetInfo* info)
     info->x = 0.0;    info->flagx = 0;
     info->y = 0.0;    info->flagy = 0;
     info->z = 0.0;    info->flagz = 0;
+    info->fptInCoord = stdin;    info->flagInCoord = 0;
+    info->cudaDeviceID = 0;    info->flagcudaDeviceID = 0;
     info->fptconfigFile = NULL;    info->flagconfigFile = 0;
     info->mode = 0;    info->flagmode = 0;
 }
@@ -28,7 +30,7 @@ init1(mrcImagePixelDataGetInfo* info)
     int i;
     if(!info->flagIn) {
         stringGetFromFile(s, "In", stdin, stdout, 0);
-        info->In = stringGetNthWord(s, 1, " ,");
+        info->In = stringGetNthWord(s, 1, " ,\t");
         info->flagIn++;
     }
     if(info->flagIn) {
@@ -48,6 +50,13 @@ init1(mrcImagePixelDataGetInfo* info)
     if(info->flagz) {
     }
     
+    if(info->flagInCoord) {
+        info->fptInCoord = fileOpen(info->InCoord, "r");
+    }
+    
+    if(info->flagcudaDeviceID) {
+    }
+    
     if(info->flagconfigFile) {
         info->fptconfigFile = fileOpen(info->configFile, "r");
     }
index 5c92e21..2511b36 100755 (executable)
 
 #define DEBUG
 #include "genUtil.h"
+#include "Memory.h"
 #include "mrcImage.h"
+#include "eosPoint.h"
+
+#ifdef  CUDA
+#include "eosCuda.h"
+#endif
+
 
 /*
 Example:
@@ -38,18 +45,54 @@ main(int argc, char* argv[])
        mrcImagePixelDataGetInfo info;
        mrcImage in;
        double data;
+       float* dataArray;
+       mrcImageParaTypeRealCoord* inCoord;
+       int nPixel, i;          
+       eosPoint p;
 
        init0(&info);
     argCheck(&info, argc, argv);
     init1(&info);
 
        DEBUGPRINT("Program Start\n");
+#ifdef CUDA
+       if(info.flagcudaDeviceID) {
+               DEBUGPRINT("eosCudaInit --> start\n");
+               eosCudaInit(info.cudaDeviceID);
+               DEBUGPRINT("eosCudaInit --> end\n");
+       }
+#endif 
 
        mrcFileRead(&in, info.In, "in main", 0); 
 
-       mrcPixelDataGet(&in, info.x, info.y, info.z, &data, mrcPixelRePart, mrcPixelHowNearest);
+       if(info.flagInCoord) {
+               eosPointRead(info.fptInCoord, &p, 0);
+               nPixel=0;
+               p.current = p.top;
+               while(p.current!=NULL) {
+                       nPixel++;
+                       p.current = p.current->next;
+               }
+               dataArray = memoryAllocate(sizeof(float)*nPixel, "in mrcPixelsDataGet");
+               inCoord = memoryAllocate(sizeof(mrcImageParaTypeRealCoord)*nPixel, "in mrcPixelsDataGet"); 
 
-       fprintf(info.fptOut, "%lf", data);
+               i = 0;
+               p.current = p.top;
+               while(p.current!=NULL) {
+                       inCoord[i].x = p.current->p.coord.data[0]; 
+                       inCoord[i].y = p.current->p.coord.data[1]; 
+                       inCoord[i].z = p.current->p.coord.data[2]; 
+                       i++;
+                       p.current = p.current->next;
+               }
+               mrcPixelsDataGet(dataArray, inCoord, nPixel, &in, mrcPixelRePart, info.mode);
+               for(i=0; i<nPixel; i++) {
+                       fprintf(info.fptOut, "%f\n", dataArray[i]);
+               }
+       } else {
+               mrcPixelDataGet(&in, info.x, info.y, info.z, &data, mrcPixelRePart, info.mode);
+               fprintf(info.fptOut, "%lf\n", data);
+       }
        exit(EXIT_SUCCESS);
 }
 
old mode 100644 (file)
new mode 100755 (executable)
index c338ff9..7972a9f
@@ -1 +1,23 @@
-/bin/bash: mrcImagePixelDataGet: そのようなファイルやディレクトリはありません
+<HTML>
+<HEAD>
+<TITLE>mrcImagePixelDataGet</TITLE>
+</HEAD>
+<BODY>
+<H1>mrcImagePixelDataGet</H1>
+<H2>Usage</H2>
+<PRE>
+Usage: mrcImagePixelDataGet
+Options:
+    [-i[nput]            In                  (NULL      ).as(inFile::mrcImage    ) ] :Essential :Input: mrcImage
+    [-o[utput]           Out                 (stdout    ).as(outFile::ASCII      ) ] :Optional  :OutputDataFile
+    [-x                  x                   (0.0       ).as(Real                ) ] :Optional  :Input: x
+    [-y                  y                   (0.0       ).as(Real                ) ] :Optional  :Input: y
+    [-z                  z                   (0.0       ).as(Real                ) ] :Optional  :Input: z
+    [-In[put]            InCoord             (stdin     ).as(inFile::ASCII       ) ] :Optional  :Input:eosPoint
+    [-cuda               cudaDeviceID        (0         ).as(Integer             ) ] :Optional  :cudaDeviceID
+    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile
+    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode
+----- Additional Usage -----
+</PRE>
+</BODY>
+</HTML>
index b2e6a47..053cdfc 100755 (executable)
@@ -7,13 +7,15 @@
         -R 1 0 1 5x1+35+0 'Run' 'execute operation' $EOS/bin/mrcImagePixelDataGet
         -H 1  5x1+41+0 'Help' 'help page' $EOS/src/Tools/mrcImage/mrcImagePixelDataGet/doc/mrcImagePixelDataGet.doc help
         -Q 1 0 5.25x1+47+0 'Close'
-        -I 1 0 1 1 0 1 -1x1+1+1.500000 ' ' 'In' 'InputDataFile' i
+        -I 1 0 1 1 0 1 -1x1+1+1.500000 ' ' 'In' 'Input: mrcImage' i
         -O 1 0 1 0 0 1 -1x1+1+3.000000 ' ' 'Out' 'OutputDataFile' o
         -f 1 0 1 0 0 -1x1+1+4.500000 0 0 0.000000 0 0 0 'x' 'Input: x' x
         -f 1 0 1 0 0 -1x1+1+6.000000 0 0 0.000000 0 0 0 'y' 'Input: y' y
         -f 1 0 1 0 0 -1x1+1+7.500000 0 0 0.000000 0 0 0 'z' 'Input: z' z
-        -I 1 0 1 0 0 1 -1x1+1+9.000000 ' ' 'configFile' 'ConfigurationFile' c
-        -i 1 0 1 0 0 -1x1+1+10.500000 0 0 0 0 0 'mode' 'Mode' m
+        -I 1 0 1 0 0 1 -1x1+1+9.000000 ' ' 'InCoord' 'Input:eosPoint' In
+        -i 1 0 1 0 0 -1x1+1+10.500000 0 0 0 0 0 'cudaDeviceID' 'cudaDeviceID' cuda
+        -I 1 0 1 0 0 1 -1x1+1+12.000000 ' ' 'configFile' 'ConfigurationFile' c
+        -i 1 0 1 0 0 -1x1+1+13.500000 0 0 0 0 0 'mode' 'Mode' m
     -E
   -E
 -E
diff --git a/src/Tools/mrcImage/mrcImagePixelDataGet/src/test/Makefile b/src/Tools/mrcImage/mrcImagePixelDataGet/src/test/Makefile
new file mode 100755 (executable)
index 0000000..4f18def
--- /dev/null
@@ -0,0 +1,22 @@
+include ../../Config/Define.inc
+include ../../../Config/Define.inc
+include ../../../../Config/Define.inc
+include ../../../../../Config/Define.inc
+
+all: help exec
+
+help:
+       @echo "----- Help Message Check -----"
+       @../$(OSTYPE)/$(OBJECTNAME)      -h
+
+exec:
+       @echo "----- Execution Check -----"
+       ../$(OSTYPE)/$(OBJECTNAME)  -i data/test.in -o data/test.out1 -x 128   -y 128   -z 0 -m 0
+       ../$(OSTYPE)/$(OBJECTNAME)  -i data/test.in -o data/test.out2 -x 128.2 -y 128.2 -z 0 -m 1 
+       ../$(OSTYPE)/$(OBJECTNAME)  -i data/test.in -o data/test.out3 -In data/test.inCoord -m 0
+       ../$(OSTYPE)/$(OBJECTNAME)  -i data/test.in -o data/test.out4 -In data/test.inCoord -m 1
+       ../$(OSTYPE)/$(OBJECTNAME)  -i data/test.in -o data/test.out5 -In data/test.inCoord -m 0 -cuda 0
+       ../$(OSTYPE)/$(OBJECTNAME)  -i data/test.in -o data/test.out6 -In data/test.inCoord -m 1 -cuda 0 
+       @echo "----- Calc check -----"          
+
+clean:
diff --git a/src/Tools/mrcImage/mrcImagePixelDataGet/src/test/data b/src/Tools/mrcImage/mrcImagePixelDataGet/src/test/data
new file mode 120000 (symlink)
index 0000000..a6b5f1e
--- /dev/null
@@ -0,0 +1 @@
+../../../../../..//data/mrcImagePixelDataGet
\ No newline at end of file
index e0d7590..965a4ff 100755 (executable)
@@ -7,13 +7,15 @@ usage(char* thisProgram)
 {
     fprintf(stderr, "Usage: %s\n", thisProgram);
     fprintf(stderr, "Options:\n");
-    fprintf(stderr, "    [-i[nput]            In                  (NULL      )] :Essential :InputDataFile\n");
-    fprintf(stderr, "    [-o[utput]           Out                 (stdout    )] :Optional  :OutputDataFile\n");
-    fprintf(stderr, "    [-x                  x                   (0.0       )] :Optional  :Input: x\n");
-    fprintf(stderr, "    [-y                  y                   (0.0       )] :Optional  :Input: y\n");
-    fprintf(stderr, "    [-z                  z                   (0.0       )] :Optional  :Input: z\n");
-    fprintf(stderr, "    [-c[onfig]           configFile          (NULL      )] :Optional  :ConfigurationFile\n");
-    fprintf(stderr, "    [-m[ode]             mode                (0         )] :Optional  :Mode\n");
+    fprintf(stderr, "    [-i[nput]            In                  (NULL      ).as(inFile::mrcImage    ) ] :Essential :Input: mrcImage\n");
+    fprintf(stderr, "    [-o[utput]           Out                 (stdout    ).as(outFile::ASCII      ) ] :Optional  :OutputDataFile\n");
+    fprintf(stderr, "    [-x                  x                   (0.0       ).as(Real                ) ] :Optional  :Input: x\n");
+    fprintf(stderr, "    [-y                  y                   (0.0       ).as(Real                ) ] :Optional  :Input: y\n");
+    fprintf(stderr, "    [-z                  z                   (0.0       ).as(Real                ) ] :Optional  :Input: z\n");
+    fprintf(stderr, "    [-In[put]            InCoord             (stdin     ).as(inFile::ASCII       ) ] :Optional  :Input:eosPoint\n");
+    fprintf(stderr, "    [-cuda               cudaDeviceID        (0         ).as(Integer             ) ] :Optional  :cudaDeviceID\n");
+    fprintf(stderr, "    [-c[onfig]           configFile          (NULL      ).as(inFile              ) ] :Optional  :ConfigurationFile\n");
+    fprintf(stderr, "    [-m[ode]             mode                (0         ).as(Integer             ) ] :Optional  :Mode\n");
     additionalUsage();
 }