mirror of
https://github.com/facebookresearch/faiss.git
synced 2025-06-03 21:54:02 +08:00
40 lines
914 B
Plaintext
40 lines
914 B
Plaintext
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD+Patents license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
// Copyright 2004-present Facebook. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
namespace faiss { namespace gpu {
|
|
|
|
#ifdef __CUDA_ARCH__
|
|
#if __CUDA_ARCH__ <= 700
|
|
constexpr int kWarpSize = 32;
|
|
#else
|
|
#error Unknown __CUDA_ARCH__; please define parameters for compute capability
|
|
#endif // __CUDA_ARCH__ types
|
|
#endif // __CUDA_ARCH__
|
|
|
|
#ifndef __CUDA_ARCH__
|
|
// dummy value for host compiler
|
|
constexpr int kWarpSize = 32;
|
|
#endif // !__CUDA_ARCH__
|
|
|
|
// This is a memory barrier for intra-warp writes to shared memory.
|
|
__forceinline__ __device__ void warpFence() {
|
|
|
|
#if __CUDA_ARCH__ >= 700
|
|
__syncwarp();
|
|
#else
|
|
// For the time being, assume synchronicity.
|
|
// __threadfence_block();
|
|
#endif
|
|
}
|
|
|
|
} } // namespace
|