Go to file
Robert Maynard c1c43d19d4 Force GCC linker to see that we need pthread to work around nvidia driver bug.
1. Some Linux distributions default linker implicitly enables the as-needed
linking flag. This means that your shared library or executable will only
link to libraries from which they use symbols. So if you explicitly link to
pthread but don't use any symbols you wont have a 'DT_NEEDED' entry for
pthread.

2. NVidia libGL (driver version 352 ) uses pthread but doesn't have
a DT_NEEDED entry for the library. When you run ldd or readelf on the library
you won't detect any reference to the pthread library. Aside this is odd
since the mesa version does explicitly link to pthread. But if you run the
following command:
       "strings  /usr/lib/nvidia-352/libGL.so.1 | grep pthread | less"
You will see the following:
{ pthread_create
  pthread_self
  pthread_equal
  pthread_key_crea
  ...
  libpthread.so.0
  libpthread.so
  pthread_create
}
This is very strong evidence that this library is using pthread.

3. So what does this all mean?
It means that on system that use the linking flag 'as-needed', are using
the nvidia driver, and don't use pthread will generate binaries that crash
on launch. The only way to work around this issue is to do either:
  A: Specify 'no-as-needed' to the linker potentially causing over-linking
     and a  slow down in link time
  B: Use a method from pthread, making the linker realize that pthread is
     needed.

 We went with method B.
2016-03-18 09:34:03 -04:00
CMake Disable vectorization when building with ICC 14.0 2016-03-16 13:27:04 -04:00
docs The Copyright statement now has all the periods in the correct location. 2015-05-21 10:30:11 -04:00
examples Update IsosurfaceUniformGrid to use the marching cubes filter. 2016-03-14 08:39:17 -04:00
vtkm Force GCC linker to see that we need pthread to work around nvidia driver bug. 2016-03-18 09:34:03 -04:00
CMakeLists.txt Resolves Issue 52, we now install all vtkm files correctly. 2016-02-22 14:20:35 -05:00
CONTRIBUTING.md Add a contributing guide to vtk-m. 2015-07-29 17:33:30 -04:00
CTestConfig.cmake Switch over to uploading by https as that is required by cdash. 2016-02-23 14:03:52 -05:00
LICENSE.txt Fix compile time errors 2015-08-21 11:17:10 -07:00
README.md Update ReadMe to reference gitlab. 2015-05-13 08:45:52 -04:00

VTK-m

One of the biggest recent changes in high-performance computing is the increasing use of accelerators. Accelerators contain processing cores that independently are inferior to a core in a typical CPU, but these cores are replicated and grouped such that their aggregate execution provides a very high computation rate at a much lower power. Current and future CPU processors also require much more explicit parallelism. Each successive version of the hardware packs more cores into each processor, and technologies like hyperthreading and vector operations require even more parallel processing to leverage each cores full potential.

VTK-m is a toolkit of scientific visualization algorithms for emerging processor architectures. VTK-m supports the fine-grained concurrency for data analysis and visualization algorithms required to drive extreme scale computing by providing abstract models for data and execution that can be applied to a variety of algorithms across many different processor architectures.

Getting VTK-m

The VTK-m repository is located at https://gitlab.kitware.com/vtk/vtk-m

VTK-m dependencies are:

git clone https://gitlab.kitware.com/vtk/vtk-m.git vtkm
mkdir vtkm-build
cd vtkm-build
cmake-gui ../vtkm

A detailed walk-through of installing and building VTK-m can be found on our Contributing page